package com.bigdata.spark.core.rdd.persist

import org.apache.spark.{SparkConf, SparkContext}

object RDD_Persist02 {

  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("Persist")
    val sc = new SparkContext(sparkConf)

    val list = List("Hello Scala", "Hello Spark")

    val rdd = sc.makeRDD(list)
    val flatRDD = rdd.flatMap(_.split(" "))
    val mapRDD = flatRDD.map(word => {
      println("######################################")
      (word, 1)
    })

    // RDD中不存储数据
    // 如果一个RDD需要重复使用，那么需要从头再次执行获取数据
    // RDD对象可以重用的，但是数据无法重用


    val reduceRDD = mapRDD.reduceByKey(_ + _)
    reduceRDD.collect().foreach(println)

    println("====================================================")

    val groupRDD = mapRDD.groupByKey()
    groupRDD.collect().foreach(println)

    sc.stop()
  }
}
